home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / cg.lha / cg / src / Tree.md < prev    next >
Text File  |  1992-11-24  |  16KB  |  423 lines

  1. DEFINITION MODULE Tree;
  2.  
  3. IMPORT SYSTEM, IO;
  4. (* line 36 "" *)
  5.  
  6.  
  7. FROM SYSTEM    IMPORT ADDRESS;
  8. FROM IO        IMPORT tFile;
  9. FROM Strings    IMPORT tString;
  10. FROM StringMem    IMPORT tStringRef;
  11. FROM Idents    IMPORT tIdent;
  12. FROM Texts    IMPORT tText;
  13. FROM Sets    IMPORT tSet;
  14. FROM Relations    IMPORT tRelation;
  15. FROM Positions    IMPORT tPosition;
  16.  
  17. VAR ErrorCount    : CARDINAL;
  18.  
  19. CONST
  20.  
  21.    (* properties of attributes and attribute instances        *)
  22.  
  23.    Virtual    = 0;
  24.    Computed    = 1;
  25.    Reverse    = 2;    (* list attribute to be used for reversion *)
  26.    Write    = 3;    (* Usage:                *)
  27.    Read        = 4;    (*                      *)
  28.    Inherited    = 5;    (* Kind:                *)
  29.    Synthesized    = 6;
  30.    Input    = 7;    (* Mode:                *)
  31.    Output    = 8;
  32.    Tree        = 9;    (* Store:                *)
  33.    Parameter    = 10;
  34.    Stack    = 11;
  35.    Variable    = 12;    (*    global variable            *)
  36.    Demand    = 13;
  37.    Funct    = 14;
  38.    Ignore    = 15;
  39. (* Abstract    = 16;                        *)
  40.    Thread    = 17;    (* specified thread            *)
  41.    Test        = 18;    (* generated for check            *)
  42.    Left        = 19;    (* lhs/rhs of rule (for instances)    *)
  43.    Right    = 20;    (*                    *)
  44.    CopyDef    = 21;    (* defined by copy rule            *)
  45.    CopyUse    = 22;    (* used by copy rule            *)
  46.    NonBaseComp    = 23;    (* non inherited computation        *)
  47.    MultInhComp    = 24;    (* multiple inherited computation    *)
  48.    First    = 25;    (* first attribute of group        *)
  49.    Dummy    = 26;    (* dummy attribute for complete evaluation *)
  50.    Def        = 27;    (* marks definition of attribute    *)
  51.    Use        = 28;    (* marks last use of attribute        *)
  52.    ChildUse    = 29;    (* marks last use of rhs attribute    *)
  53.    ParentUse    = 30;    (* marks last use of lhs attribute    *)
  54.    Generated    = 31;    (* action part has been generated    *)
  55.  
  56.    (* properties of classes                    *)
  57.  
  58.    Top        = 0;    (* declaration level:            *)
  59.    Intermediate    = 1;    (*                    *)
  60.    Low        = 2;    (*    (has no extensions)        *)
  61.    Referenced    = 3;    (* explicitly used            *)
  62.    Reachable    = 4;    (* reachable maybe via extensions    *)
  63.    Nonterminal    = 5;
  64.    Terminal    = 6;
  65.    Explicit    = 7;    (* class explicitely declared        *)
  66.    Implicit    = 8;    (* class implicitely declared        *)
  67.    Trace    = 9;    (*                    *)
  68.    String    = 10;    (* named by string, otherwise ident    *)
  69.    HasSelector    = 11;    (* selector explicitly specified    *)
  70.    HasChildren    = 12;    (*                    *)
  71.    HasAttributes= 13;    (*                    *)
  72.    HasActions    = 14;    (*                    *)
  73. (* Ignore    = 15;                        *)
  74.    Abstract    = 16;
  75.    Mark        = 17;
  76.    HasOutput    = 18;    (* has output attributes or tests    *)
  77.  
  78. (* line 340 "" *)
  79.  
  80.  
  81. CONST            (* grammar classes    *)
  82.  
  83.    cLNC        = 0;    (* locally non circular *)
  84.    cWAG        = 1;    (* well defined *)
  85.    cSNC        = 2;    (* ANC, ANCAG *)
  86.    cDNC        = 3;
  87.    cLordered    = 4;
  88.    cOAG        = 5;
  89.    cSweep    = 6;
  90.    cALT        = 7;    (* APAG *)
  91.    cLAG        = 8;
  92.    cRAG        = 9;
  93.    cSAG        = 10;
  94.  
  95. TYPE
  96.    tBitInfo    = RECORD ToBit, ToAttr: SHORTCARD; END;
  97.    tBitIndex    = POINTER TO ARRAY [1 .. 1000000] OF tBitInfo;
  98.    tInstancePtr    = POINTER TO tInstances;
  99.    tSetOfRelPtr    = POINTER TO tSetOfRel;
  100.    tSetOfRel    = RECORD Relation: tRelation; Next: tSetOfRelPtr; END;
  101.    INTEGER9999    = SHORTCARD;
  102.  
  103. VAR
  104.    ClassCount    : INTEGER;
  105.    GrammarClass    : BITSET;
  106.    MaxVisit    : SHORTCARD;
  107.    SubUnit    ,
  108.    ViewName    ,
  109.    iPosition    ,
  110.    itPosition    ,
  111.    iInteger    ,
  112.    iMain    ,
  113.    iModule    ,
  114.    itTree    ,
  115.    iNoTree    : tIdent;
  116.    ModuleName    : tString;
  117.    TypeNames    ,
  118.    MaxSet    : tSet;
  119.  
  120.  
  121. CONST
  122. NoTree = NIL;
  123.  
  124. Classes = 1;
  125. NoClass = 2;
  126. Class = 3;
  127. Attributes = 4;
  128. NoAttribute = 5;
  129. AttrOrAction = 6;
  130. Child = 7;
  131. Attribute = 8;
  132. ActionPart = 9;
  133. Codes = 10;
  134. Designators = 11;
  135. NoDesignator = 12;
  136. Designator = 13;
  137. Ident = 14;
  138. Remote = 15;
  139. Any = 16;
  140. Anys = 17;
  141. Layouts = 18;
  142. NoLayout = 19;
  143. LayoutAny = 20;
  144. Names = 21;
  145. NoName = 22;
  146. Name = 23;
  147. Ag = 24;
  148. Precs = 25;
  149. NoPrec = 26;
  150. Prec = 27;
  151. LeftAssoc = 28;
  152. RightAssoc = 29;
  153. NonAssoc = 30;
  154. Actions = 31;
  155. NoAction = 32;
  156. Action = 33;
  157. Assign = 34;
  158. Copy = 35;
  159. TargetCode = 36;
  160. Order = 37;
  161. Check = 38;
  162. Modules = 39;
  163. NoModule = 40;
  164. Module = 41;
  165. Props = 42;
  166. NoProp = 43;
  167. Prop = 44;
  168. Select = 45;
  169. Decls = 46;
  170. NoDecl = 47;
  171. Decl = 48;
  172.  
  173. TYPE tTree = POINTER TO yyNode;
  174. tProcTree = PROCEDURE (tTree);
  175. (* line 110 "" *)
  176.  
  177.  
  178. TYPE
  179.    INTEGER0        = SHORTCARD;
  180.    tAttrProperties    = BITSET;
  181.    tClassProperties    = BITSET;
  182.    tClass        = tTree;
  183.    ProcOfT        = PROCEDURE (tTree);
  184.  
  185. VAR
  186.    Options    : tSet;
  187.    f        : tFile;
  188.    SourceFile    : ARRAY [0..255] OF CHAR;
  189.    NoCodeAttr    ,
  190.    NoCodeClass    : BITSET;
  191.  
  192. PROCEDURE InitIdentifyClass    (t: tTree);
  193. PROCEDURE InitIdentifyClass2    (t: tTree);
  194. PROCEDURE IdentifyClass        (t: tTree; Ident: tIdent): tTree;
  195. PROCEDURE IdentifyAttribute    (t: tTree; Ident: tIdent): tTree;
  196. PROCEDURE ForallClasses        (t: tTree; Proc: ProcOfT);
  197. PROCEDURE ForallAttributes    (t: tTree; Proc: ProcOfT);
  198. PROCEDURE Error        (ErrorCode: INTEGER; Pos: tPosition);
  199. PROCEDURE Warning    (ErrorCode: INTEGER; Pos: tPosition);
  200. PROCEDURE Information    (ErrorCode: INTEGER; Pos: tPosition);
  201. PROCEDURE ErrorI    (ErrorCode: INTEGER; Pos: tPosition; iClass: INTEGER; iPtr: ADDRESS);
  202. PROCEDURE WarningI    (ErrorCode: INTEGER; Pos: tPosition; iClass: INTEGER; iPtr: ADDRESS);
  203. PROCEDURE InformationI    (ErrorCode: INTEGER; Pos: tPosition; iClass: INTEGER; iPtr: ADDRESS);
  204. PROCEDURE WI        (i: tIdent);
  205. PROCEDURE WE        (i: tIdent);
  206. PROCEDURE WN        (n: INTEGER);
  207.  
  208. (* line 382 "" *)
  209.  
  210. TYPE
  211.    tInstance    = RECORD
  212.              Selector    : tTree;
  213.              Attribute    : tTree;
  214.              Action    : tTree;
  215.              Properties    : tAttrProperties;
  216.              Order    : SHORTINT;
  217.              CopyArg    : SHORTCARD;
  218.           END;
  219.    tInstances    = ARRAY [1 .. 100000] OF tInstance;
  220.  
  221. VAR
  222.    nNoAction    ,
  223.    nNoAttribute    ,
  224.    nNoClass    ,
  225.    nNoDecl    ,
  226.    nNoDesignator,
  227.    nNoLayout    ,
  228.    nNoModule    ,
  229.    nNoName    ,
  230.    nNoPrec    ,
  231.    nNoProp    : tTree;
  232.  
  233. PROCEDURE BeginTree2;
  234. PROCEDURE IdentifyModule    (t: tTree; Ident: tIdent): tTree;
  235. PROCEDURE WriteName        (i: tInstance);
  236. PROCEDURE WriteInstance        (i: tInstance);
  237. PROCEDURE WriteDependencies    (t: tTree; r: tRelation; s: tSet);
  238. PROCEDURE WriteCyclics        (t: tTree; s: tSet);
  239. PROCEDURE WriteAttrProperties    (f: tFile; Properties: tAttrProperties);
  240. PROCEDURE WriteClassProperties    (f: tFile; Properties: tClassProperties);
  241. PROCEDURE WriteClass        (t: tTree);
  242.  
  243. (* line 818 "" *)
  244.  
  245. PROCEDURE HasItem (t: tTree; Item: SHORTCARD): BOOLEAN;
  246.  
  247.  
  248.  
  249.  
  250.  
  251. TYPE
  252. yytNodeHead = RECORD yyKind, yyMark: SHORTCARD;  END;
  253. yClasses = RECORD yyHead: yytNodeHead; END;
  254. yNoClass = RECORD yyHead: yytNodeHead; END;
  255. yClass = RECORD yyHead: yytNodeHead; Name: tIdent; Properties: tClassProperties; Attributes: tTree; Extensions: tTree; Next: tTree; BaseClass: tTree; Selector: tIdent; Pos: tPosition; Code: SHORTCARD; Prec: tIdent; Names: tTree; AttrCount: SHORTCARD; InstCount: SHORTCARD; Instance: tInstancePtr; DP: tRelation; SNC: tRelation; DNC: tRelation; OAG: tRelation; Part: tRelation; Index: SHORTCARD; Visits: SHORTCARD; Users: tSet; Generated: INTEGER0; BitCount: SHORTCARD; BitIndex: tBitIndex; D: tSetOfRelPtr; END;
  256. yAttributes = RECORD yyHead: yytNodeHead; END;
  257. yNoAttribute = RECORD yyHead: yytNodeHead; END;
  258. yAttrOrAction = RECORD yyHead: yytNodeHead; Next: tTree; Item: SHORTCARD; END;
  259. yChild = RECORD yyHead: yytNodeHead; Next: tTree; Item: SHORTCARD; Name: tIdent; Type: tIdent; Properties: tAttrProperties; Pos: tPosition; AttrIndex: SHORTCARD; Partition: INTEGER9999; Usage: BITSET; InstOffset: SHORTCARD; Class: tClass; ParsIndex: SHORTCARD; BitOffset: SHORTCARD; END;
  260. yAttribute = RECORD yyHead: yytNodeHead; Next: tTree; Item: SHORTCARD; Name: tIdent; Type: tIdent; Properties: tAttrProperties; Pos: tPosition; AttrIndex: SHORTCARD; Partition: INTEGER9999; Usage: BITSET; END;
  261. yActionPart = RECORD yyHead: yytNodeHead; Next: tTree; Item: SHORTCARD; Actions: tTree; Name: SHORTCARD; ParsIndex: SHORTCARD; Properties: BITSET; END;
  262. yCodes = RECORD yyHead: yytNodeHead; Export: tText; Import: tText; Global: tText; Local: tText; Begin: tText; Close: tText; ExportLine: tPosition; ImportLine: tPosition; GlobalLine: tPosition; LocalLine: tPosition; BeginLine: tPosition; CloseLine: tPosition; END;
  263. yDesignators = RECORD yyHead: yytNodeHead; END;
  264. yNoDesignator = RECORD yyHead: yytNodeHead; END;
  265. yDesignator = RECORD yyHead: yytNodeHead; Selector: tIdent; Attribute: tIdent; Pos: tPosition; Next: tTree; END;
  266. yIdent = RECORD yyHead: yytNodeHead; Attribute: tIdent; Pos: tPosition; Next: tTree; END;
  267. yRemote = RECORD yyHead: yytNodeHead; Designators: tTree; Type: tIdent; Attribute: tIdent; Pos: tPosition; Next: tTree; END;
  268. yAny = RECORD yyHead: yytNodeHead; Code: tStringRef; Next: tTree; END;
  269. yAnys = RECORD yyHead: yytNodeHead; Layouts: tTree; Next: tTree; END;
  270. yLayouts = RECORD yyHead: yytNodeHead; END;
  271. yNoLayout = RECORD yyHead: yytNodeHead; END;
  272. yLayoutAny = RECORD yyHead: yytNodeHead; Code: tStringRef; Next: tTree; END;
  273. yNames = RECORD yyHead: yytNodeHead; END;
  274. yNoName = RECORD yyHead: yytNodeHead; END;
  275. yName = RECORD yyHead: yytNodeHead; Name: tIdent; Pos: tPosition; Next: tTree; END;
  276. yAg = RECORD yyHead: yytNodeHead; Name: tIdent; ScannerName: tIdent; ParserName: tIdent; ParserCodes: tTree; TreeName: tIdent; TreeCodes: tTree; EvalName: tIdent; EvalCodes: tTree; Precs: tTree; Props: tTree; Decls: tTree; Classes: tTree; Modules: tTree; Properties: BITSET; END;
  277. yPrecs = RECORD yyHead: yytNodeHead; END;
  278. yNoPrec = RECORD yyHead: yytNodeHead; END;
  279. yPrec = RECORD yyHead: yytNodeHead; Names: tTree; Next: tTree; END;
  280. yLeftAssoc = RECORD yyHead: yytNodeHead; Names: tTree; Next: tTree; END;
  281. yRightAssoc = RECORD yyHead: yytNodeHead; Names: tTree; Next: tTree; END;
  282. yNonAssoc = RECORD yyHead: yytNodeHead; Names: tTree; Next: tTree; END;
  283. yActions = RECORD yyHead: yytNodeHead; END;
  284. yNoAction = RECORD yyHead: yytNodeHead; END;
  285. yAction = RECORD yyHead: yytNodeHead; Next: tTree; Pos: tPosition; END;
  286. yAssign = RECORD yyHead: yytNodeHead; Next: tTree; Pos: tPosition; Results: tTree; Arguments: tTree; END;
  287. yCopy = RECORD yyHead: yytNodeHead; Next: tTree; Pos: tPosition; Results: tTree; Arguments: tTree; END;
  288. yTargetCode = RECORD yyHead: yytNodeHead; Next: tTree; Pos: tPosition; Results: tTree; Code: tTree; END;
  289. yOrder = RECORD yyHead: yytNodeHead; Next: tTree; Pos: tPosition; Results: tTree; Arguments: tTree; END;
  290. yCheck = RECORD yyHead: yytNodeHead; Next: tTree; Pos: tPosition; Condition: tTree; Statement: tTree; Actions: tTree; Results: tTree; END;
  291. yModules = RECORD yyHead: yytNodeHead; END;
  292. yNoModule = RECORD yyHead: yytNodeHead; END;
  293. yModule = RECORD yyHead: yytNodeHead; Name: tIdent; ParserCodes: tTree; TreeCodes: tTree; EvalCodes: tTree; Props: tTree; Decls: tTree; Classes: tTree; Next: tTree; Properties: BITSET; END;
  294. yProps = RECORD yyHead: yytNodeHead; END;
  295. yNoProp = RECORD yyHead: yytNodeHead; END;
  296. yProp = RECORD yyHead: yytNodeHead; Properties: BITSET; Names: tTree; Next: tTree; END;
  297. ySelect = RECORD yyHead: yytNodeHead; Names: tTree; Next: tTree; END;
  298. yDecls = RECORD yyHead: yytNodeHead; END;
  299. yNoDecl = RECORD yyHead: yytNodeHead; END;
  300. yDecl = RECORD yyHead: yytNodeHead; Names: tTree; Attributes: tTree; Properties: tClassProperties; Next: tTree; END;
  301.  
  302. yyNode = RECORD
  303. CASE : SHORTCARD OF
  304. | 0: Kind: SHORTCARD;
  305. | 130: yyHead: yytNodeHead;
  306. | Classes: Classes: yClasses;
  307. | NoClass: NoClass: yNoClass;
  308. | Class: Class: yClass;
  309. | Attributes: Attributes: yAttributes;
  310. | NoAttribute: NoAttribute: yNoAttribute;
  311. | AttrOrAction: AttrOrAction: yAttrOrAction;
  312. | Child: Child: yChild;
  313. | Attribute: Attribute: yAttribute;
  314. | ActionPart: ActionPart: yActionPart;
  315. | Codes: Codes: yCodes;
  316. | Designators: Designators: yDesignators;
  317. | NoDesignator: NoDesignator: yNoDesignator;
  318. | Designator: Designator: yDesignator;
  319. | Ident: Ident: yIdent;
  320. | Remote: Remote: yRemote;
  321. | Any: Any: yAny;
  322. | Anys: Anys: yAnys;
  323. | Layouts: Layouts: yLayouts;
  324. | NoLayout: NoLayout: yNoLayout;
  325. | LayoutAny: LayoutAny: yLayoutAny;
  326. | Names: Names: yNames;
  327. | NoName: NoName: yNoName;
  328. | Name: Name: yName;
  329. | Ag: Ag: yAg;
  330. | Precs: Precs: yPrecs;
  331. | NoPrec: NoPrec: yNoPrec;
  332. | Prec: Prec: yPrec;
  333. | LeftAssoc: LeftAssoc: yLeftAssoc;
  334. | RightAssoc: RightAssoc: yRightAssoc;
  335. | NonAssoc: NonAssoc: yNonAssoc;
  336. | Actions: Actions: yActions;
  337. | NoAction: NoAction: yNoAction;
  338. | Action: Action: yAction;
  339. | Assign: Assign: yAssign;
  340. | Copy: Copy: yCopy;
  341. | TargetCode: TargetCode: yTargetCode;
  342. | Order: Order: yOrder;
  343. | Check: Check: yCheck;
  344. | Modules: Modules: yModules;
  345. | NoModule: NoModule: yNoModule;
  346. | Module: Module: yModule;
  347. | Props: Props: yProps;
  348. | NoProp: NoProp: yNoProp;
  349. | Prop: Prop: yProp;
  350. | Select: Select: ySelect;
  351. | Decls: Decls: yDecls;
  352. | NoDecl: NoDecl: yNoDecl;
  353. | Decl: Decl: yDecl;
  354. END;
  355. END;
  356.  
  357. VAR TreeRoot    : tTree;
  358. VAR HeapUsed    : LONGCARD;
  359. VAR yyPoolFreePtr, yyPoolMaxPtr    : SYSTEM.ADDRESS;
  360. VAR yyNodeSize    : ARRAY [0..129] OF SHORTCARD;
  361. VAR yyExit    : PROC;
  362.  
  363. PROCEDURE yyAlloc    (): tTree;
  364. PROCEDURE MakeTree    (Kind: SHORTCARD): tTree;
  365. PROCEDURE IsType    (Tree: tTree; Kind: SHORTCARD): BOOLEAN;
  366.  
  367. PROCEDURE mClasses (): tTree;
  368. PROCEDURE mNoClass (): tTree;
  369. PROCEDURE mClass (pName: tIdent; pProperties: tClassProperties; pAttributes: tTree; pExtensions: tTree; pNext: tTree; pSelector: tIdent; pPos: tPosition; pCode: SHORTCARD; pPrec: tIdent; pNames: tTree): tTree;
  370. PROCEDURE mAttributes (): tTree;
  371. PROCEDURE mNoAttribute (): tTree;
  372. PROCEDURE mAttrOrAction (pNext: tTree): tTree;
  373. PROCEDURE mChild (pNext: tTree; pName: tIdent; pType: tIdent; pProperties: tAttrProperties; pPos: tPosition): tTree;
  374. PROCEDURE mAttribute (pNext: tTree; pName: tIdent; pType: tIdent; pProperties: tAttrProperties; pPos: tPosition): tTree;
  375. PROCEDURE mActionPart (pNext: tTree; pActions: tTree): tTree;
  376. PROCEDURE mCodes (pExport: tText; pImport: tText; pGlobal: tText; pLocal: tText; pBegin: tText; pClose: tText; pExportLine: tPosition; pImportLine: tPosition; pGlobalLine: tPosition; pLocalLine: tPosition; pBeginLine: tPosition; pCloseLine: tPosition): tTree;
  377. PROCEDURE mDesignators (): tTree;
  378. PROCEDURE mNoDesignator (): tTree;
  379. PROCEDURE mDesignator (pSelector: tIdent; pAttribute: tIdent; pPos: tPosition; pNext: tTree): tTree;
  380. PROCEDURE mIdent (pAttribute: tIdent; pPos: tPosition; pNext: tTree): tTree;
  381. PROCEDURE mRemote (pDesignators: tTree; pType: tIdent; pAttribute: tIdent; pPos: tPosition; pNext: tTree): tTree;
  382. PROCEDURE mAny (pCode: tStringRef; pNext: tTree): tTree;
  383. PROCEDURE mAnys (pLayouts: tTree; pNext: tTree): tTree;
  384. PROCEDURE mLayouts (): tTree;
  385. PROCEDURE mNoLayout (): tTree;
  386. PROCEDURE mLayoutAny (pCode: tStringRef; pNext: tTree): tTree;
  387. PROCEDURE mNames (): tTree;
  388. PROCEDURE mNoName (): tTree;
  389. PROCEDURE mName (pName: tIdent; pPos: tPosition; pNext: tTree): tTree;
  390. PROCEDURE mAg (pName: tIdent; pScannerName: tIdent; pParserName: tIdent; pParserCodes: tTree; pTreeName: tIdent; pTreeCodes: tTree; pEvalName: tIdent; pEvalCodes: tTree; pPrecs: tTree; pProps: tTree; pDecls: tTree; pClasses: tTree; pModules: tTree): tTree;
  391. PROCEDURE mPrecs (): tTree;
  392. PROCEDURE mNoPrec (): tTree;
  393. PROCEDURE mPrec (pNames: tTree; pNext: tTree): tTree;
  394. PROCEDURE mLeftAssoc (pNames: tTree; pNext: tTree): tTree;
  395. PROCEDURE mRightAssoc (pNames: tTree; pNext: tTree): tTree;
  396. PROCEDURE mNonAssoc (pNames: tTree; pNext: tTree): tTree;
  397. PROCEDURE mActions (): tTree;
  398. PROCEDURE mNoAction (): tTree;
  399. PROCEDURE mAction (pNext: tTree; pPos: tPosition): tTree;
  400. PROCEDURE mAssign (pNext: tTree; pPos: tPosition; pResults: tTree; pArguments: tTree): tTree;
  401. PROCEDURE mCopy (pNext: tTree; pPos: tPosition; pResults: tTree; pArguments: tTree): tTree;
  402. PROCEDURE mTargetCode (pNext: tTree; pPos: tPosition; pResults: tTree; pCode: tTree): tTree;
  403. PROCEDURE mOrder (pNext: tTree; pPos: tPosition; pResults: tTree; pArguments: tTree): tTree;
  404. PROCEDURE mCheck (pNext: tTree; pPos: tPosition; pCondition: tTree; pStatement: tTree; pActions: tTree): tTree;
  405. PROCEDURE mModules (): tTree;
  406. PROCEDURE mNoModule (): tTree;
  407. PROCEDURE mModule (pName: tIdent; pParserCodes: tTree; pTreeCodes: tTree; pEvalCodes: tTree; pProps: tTree; pDecls: tTree; pClasses: tTree; pNext: tTree): tTree;
  408. PROCEDURE mProps (): tTree;
  409. PROCEDURE mNoProp (): tTree;
  410. PROCEDURE mProp (pProperties: BITSET; pNames: tTree; pNext: tTree): tTree;
  411. PROCEDURE mSelect (pNames: tTree; pNext: tTree): tTree;
  412. PROCEDURE mDecls (): tTree;
  413. PROCEDURE mNoDecl (): tTree;
  414. PROCEDURE mDecl (pNames: tTree; pAttributes: tTree; pProperties: tClassProperties; pNext: tTree): tTree;
  415.  
  416. PROCEDURE WriteTreeNode    (f: IO.tFile; Tree: tTree);
  417. PROCEDURE ReverseTree    (Tree: tTree): tTree;
  418. PROCEDURE QueryTree    (Tree: tTree);
  419. PROCEDURE BeginTree;
  420. PROCEDURE CloseTree;
  421.  
  422. END Tree.
  423.